import request from "@/utils/request";

const SQL_BASE_URL = "/biz/sql";

const SqlAPI = {
  /**
   * 获取SQL类别列表
   *
   * @param queryParams 查询参数
   * @returns SQL类别列表
   */
  getCategoryList(queryParams: SqlCategoryQuery) {
    return request<any, SqlCategory[]>({
      url: `${SQL_BASE_URL}/category/page`,
      method: "get",
      params: queryParams,
    });
  },

  /**
   * 保存SQL类别
   *
   * @param data SQL类别表单数据
   */
  saveCategory(data: SqlCategory) {
    return request({
      url: `${SQL_BASE_URL}/category/save`,
      method: "post",
      data: data,
    });
  },

  /**
   * 删除SQL类别
   *
   * @param ids SQL类别ID，多个以英文逗号(,)分隔
   */
  deleteCategoryByIds(ids: string) {
    return request({
      url: `${SQL_BASE_URL}/category/${ids}`,
      method: "delete",
    });
  },

  /**
   * 获取SQL分页列表
   *
   * @param queryParams 查询参数
   * @returns SQL分页结果
   */
  getPage(queryParams: SqlPageQuery) {
    return request<any, PageResult<SqlVO[]>>({
      url: `${SQL_BASE_URL}/page`,
      method: "get",
      params: queryParams,
    });
  },
  
  options(queryParams: any) {
    return request<any, any[]>({
      url: `${SQL_BASE_URL}/options`,
      method: "get",
      params: queryParams,
    });
  },

  /**
   * 保存SQL
   *
   * @param data SQL表单数据
   */
  save(data: SqlVO) {
    return request({
      url: `${SQL_BASE_URL}/save`,
      method: "post",
      data: data,
    });
  },

  /**
   * 删除SQL
   *
   * @param ids SQL ID，多个以英文逗号(,)分隔
   */
  deleteByIds(ids: string) {
    return request({
      url: `${SQL_BASE_URL}/${ids}`,
      method: "delete",
    });
  },

  /**
   * 执行SQL测试
   *
   * @param data SQL测试参数
   */
  test(data: any) {
    return request({
      url: `${SQL_BASE_URL}/test`,
      method: "post",
      data: data,
    });
  },
};

export default SqlAPI;

/**
 * SQL类别查询参数
 */
export interface SqlCategoryQuery {
  /**
   * 关键字(SQL类别名称)
   */
  keywords?: string;
}

/**
 * SQL类别实体
 */
export interface SqlCategory {
  /**
   * 类别ID
   */
  id?: string;
  /**
   * 类别名称
   */
  name: string;
  
  parentId: string;
  
  /**
   * 排序号
   */
  sort?: number;
}

/**
 * SQL查询参数
 */
export interface SqlPageQuery extends PageQuery {
  /**
   * 关键字(SQL名称)
   */
  keywords?: string;
  /**
   * 类别ID
   */
  categoryId?: string;
}

/**
 * SQL实体
 */
export interface SqlVO {
  /**
   * SQL ID
   */
  id?: string;
  /**
   * SQL名称
   */
  name: string;
  
  /**
   * SQL标识
   */
  identifier: string;
  
  /**
   * 类别ID
   */
  categoryId: string;
  /**
   * SQL内容
   */
  content: string;
  /**
   * 数据源ID
   */
  datasourceId: string;
  
  /**
   * SQL执行
   */
  exec: string;
  
  /**
   * 排序号
   */
  sort?: number;
  /**
   * 创建时间
   */
  createTime?: Date;
  /**
   * 更新时间
   */
  updateTime?: Date;
}

/**
 * SQL测试参数
 */
export interface SqlTestParams {
  /**
   * SQL语句
   */
  sql: string;
  /**
   * 数据源ID
   */
  datasourceId: string;
}



